#ifndef _SCENESTATEREPOSITORY_H_
#define _SCENESTATEREPOSITORY_H_

#pragma once
#include "..\io\File.h"
#include <string>
#include <list>
#include <sstream>
#include "xercesc\util\PlatformUtils.hpp"
#include <xercesc\util\XMLString.hpp>
#include <xercesc\sax2\SAX2XMLReader.hpp>
#include <xercesc\sax2\XMLReaderFactory.hpp>
#include <xercesc\util\XMLException.hpp>
#include <xercesc\sax\SAXParseException.hpp>
#include <xercesc\dom\DOM.hpp>
#include <xercesc\framework\LocalFileFormatTarget.hpp>
#include "Repository.h"
#include "SAX2SceneStateHandler.h"
#include "ui\Scene.h"
#include "ui\SceneObject.h"
#include "PersistenceException.h"

using namespace std;
using namespace xercesc;
using namespace ui;
using namespace io;

class SceneStateRepository : public Repository<Scene>
{
public:
	SceneStateRepository(void);
	virtual ~SceneStateRepository(void);
	Scene* load(string) throw (PersistenceException);
	void load(string, Scene* scene) throw (PersistenceException);
	list<string> loadKeys() throw (PersistenceException);
	void save(Scene*) throw (PersistenceException);
	void remove(Scene*) throw (PersistenceException);
private:
	string toString(int);
};

#endif
